using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataReviewerTools._DataValidation
{
    /// <summary>
    /// <para>Write To Reviewer Table</para>
    /// <para>Writes a feature class, feature layer,  table, or table view to the Reviewer workspace.</para>
    /// <para>将要素类、要素图层、表或表视图写入 Reviewer 工作空间。</para>
    /// </summary>    
    [DisplayName("Write To Reviewer Table")]
    public class WriteToReviewerTable : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public WriteToReviewerTable()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_reviewer_workspace">
        /// <para>Reviewer Workspace</para>
        /// <para>The path to the Reviewer workspace where the features or table records will be written.</para>
        /// <para>将写入要素或表记录的 Reviewer 工作空间的路径。</para>
        /// </param>
        /// <param name="_in_session">
        /// <para>Session</para>
        /// <para>The Reviewer session ID in which the features or table records will be written. Use the full session ID format: Session 1 : Session 1.</para>
        /// <para>用于写入要素或表记录的 Reviewer 会话 ID。使用完整的会话 ID 格式：会话 1：会话 1。</para>
        /// </param>
        /// <param name="_in_features">
        /// <para>Input Features</para>
        /// <para>The features or table records to write to the Reviewer workspace.</para>
        /// <para>要写入检查器工作空间的特征或表记录。</para>
        /// </param>
        /// <param name="_in_field">
        /// <para>ID Field</para>
        /// <para>The field that contains identifiers for the features. The value from this field populates the ID field in the Reviewer Results pane. The field you choose must have a data type of Long.</para>
        /// <para>包含要素标识符的字段。此字段中的值将填充检查器结果窗格中的 ID 字段。您选择的字段的数据类型必须为“长”。</para>
        /// </param>
        /// <param name="_in_origin_table_name">
        /// <para>Origin Table Name (Value or Field)</para>
        /// <para><xdoc>
        ///   <para>The string or field value that will be used to populate the Source field in the Reviewer Results pane for each record that is written. This is typically the name of the feature class or table.</para>
        ///   <bulletList>
        ///     <bullet_item>String—The name of the feature layer is defined as a text string.</bullet_item><para/>
        ///     <bullet_item>Field—The value for the feature layer name is derived from a field on the feature layer or table.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>将用于在“检查器结果”窗格中为写入的每条记录填充源字段的字符串或字段值。这通常是要素类或表的名称。</para>
        ///   <bulletList>
        ///     <bullet_item>字符串 - 要素图层的名称定义为文本字符串。</bullet_item><para/>
        ///     <bullet_item>字段 - 要素图层名称的值派生自要素图层或表上的字段。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_in_review_status">
        /// <para>Review Status</para>
        /// <para><xdoc>
        ///   <para>A status string to associate with the group of records written to the Reviewer workspace. The default value is Write GP Results to Reviewer Table.If the default value is deleted or left blank, the value Write GP Results to Reviewer Table will be used as the status string.</para>
        ///   <bulletList>
        ///     <bullet_item>String—You can type the value in the String text box.</bullet_item><para/>
        ///     <bullet_item>Field—You can choose the Review Status field from the feature layer.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要与写入检查器工作空间的记录组关联的状态字符串。默认值为将 GP 结果写入检查器表。如果删除或留空默认值，则值将用作状态字符串。</para>
        ///   <bulletList>
        ///     <bullet_item>字符串 - 可在“字符串”（String） 文本框中键入值。</bullet_item><para/>
        ///     <bullet_item>字段 - 您可以从要素图层中选择查看状态字段。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        public WriteToReviewerTable(object _in_reviewer_workspace, object _in_session, object _in_features, object _in_field, object _in_origin_table_name, object _in_review_status)
        {
            this._in_reviewer_workspace = _in_reviewer_workspace;
            this._in_session = _in_session;
            this._in_features = _in_features;
            this._in_field = _in_field;
            this._in_origin_table_name = _in_origin_table_name;
            this._in_review_status = _in_review_status;
        }
        public override string ToolboxName => "Data Reviewer Tools";

        public override string ToolName => "Write To Reviewer Table";

        public override string CallName => "Reviewer.WriteToReviewerTable";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_reviewer_workspace, _in_session, _in_features, _in_field, _in_origin_table_name, _in_review_status, _in_subtype, _in_notes, _in_severity, _REVTABLEMAIN_View, _in_check_title];

        /// <summary>
        /// <para>Reviewer Workspace</para>
        /// <para>The path to the Reviewer workspace where the features or table records will be written.</para>
        /// <para>将写入要素或表记录的 Reviewer 工作空间的路径。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Reviewer Workspace")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_reviewer_workspace { get; set; }


        /// <summary>
        /// <para>Session</para>
        /// <para>The Reviewer session ID in which the features or table records will be written. Use the full session ID format: Session 1 : Session 1.</para>
        /// <para>用于写入要素或表记录的 Reviewer 会话 ID。使用完整的会话 ID 格式：会话 1：会话 1。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Session")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_session { get; set; }


        /// <summary>
        /// <para>Input Features</para>
        /// <para>The features or table records to write to the Reviewer workspace.</para>
        /// <para>要写入检查器工作空间的特征或表记录。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_features { get; set; }


        /// <summary>
        /// <para>ID Field</para>
        /// <para>The field that contains identifiers for the features. The value from this field populates the ID field in the Reviewer Results pane. The field you choose must have a data type of Long.</para>
        /// <para>包含要素标识符的字段。此字段中的值将填充检查器结果窗格中的 ID 字段。您选择的字段的数据类型必须为“长”。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("ID Field")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_field { get; set; }


        /// <summary>
        /// <para>Origin Table Name (Value or Field)</para>
        /// <para><xdoc>
        ///   <para>The string or field value that will be used to populate the Source field in the Reviewer Results pane for each record that is written. This is typically the name of the feature class or table.</para>
        ///   <bulletList>
        ///     <bullet_item>String—The name of the feature layer is defined as a text string.</bullet_item><para/>
        ///     <bullet_item>Field—The value for the feature layer name is derived from a field on the feature layer or table.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>将用于在“检查器结果”窗格中为写入的每条记录填充源字段的字符串或字段值。这通常是要素类或表的名称。</para>
        ///   <bulletList>
        ///     <bullet_item>字符串 - 要素图层的名称定义为文本字符串。</bullet_item><para/>
        ///     <bullet_item>字段 - 要素图层名称的值派生自要素图层或表上的字段。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Origin Table Name (Value or Field)")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_origin_table_name { get; set; }


        /// <summary>
        /// <para>Review Status</para>
        /// <para><xdoc>
        ///   <para>A status string to associate with the group of records written to the Reviewer workspace. The default value is Write GP Results to Reviewer Table.If the default value is deleted or left blank, the value Write GP Results to Reviewer Table will be used as the status string.</para>
        ///   <bulletList>
        ///     <bullet_item>String—You can type the value in the String text box.</bullet_item><para/>
        ///     <bullet_item>Field—You can choose the Review Status field from the feature layer.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要与写入检查器工作空间的记录组关联的状态字符串。默认值为将 GP 结果写入检查器表。如果删除或留空默认值，则值将用作状态字符串。</para>
        ///   <bulletList>
        ///     <bullet_item>字符串 - 可在“字符串”（String） 文本框中键入值。</bullet_item><para/>
        ///     <bullet_item>字段 - 您可以从要素图层中选择查看状态字段。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Review Status")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_review_status { get; set; }


        /// <summary>
        /// <para>Subtype</para>
        /// <para><xdoc>
        ///   <para>The feature class subtype to which the features belong. This can be derived from a specified value or a field on the feature class. The value from this parameter populates the SUBTYPE field in the Reviewer Results pane.</para>
        ///   <bulletList>
        ///     <bullet_item>String—You can type the value in the String text box.</bullet_item><para/>
        ///     <bullet_item>Field—You can choose the Subtype value from a field on the feature layer.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要素所属的要素类子类型。这可以从要素类上的指定值或字段派生。此参数的值将填充检查器结果窗格中的 SUBTYPE 字段。</para>
        ///   <bulletList>
        ///     <bullet_item>字符串 - 可在“字符串”（String） 文本框中键入值。</bullet_item><para/>
        ///     <bullet_item>字段 - 可从要素图层上的字段中选择子类型值。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Subtype")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _in_subtype { get; set; } = null;


        /// <summary>
        /// <para>Notes</para>
        /// <para><xdoc>
        ///   <para>Text that populates the Notes field in the Reviewer table. The notes are used to provide a more specific description of the feature or table record.</para>
        ///   <bulletList>
        ///     <bullet_item>String—You can type the value in the String text box.</bullet_item><para/>
        ///     <bullet_item>Field—You can choose the Notes value from a field on the feature layer.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>填充检查器表中注释字段的文本。注释用于提供要素或表记录的更具体描述。</para>
        ///   <bulletList>
        ///     <bullet_item>字符串 - 可在“字符串”（String） 文本框中键入值。</bullet_item><para/>
        ///     <bullet_item>字段 - 可从要素图层上的字段中选择注释值。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Notes")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _in_notes { get; set; } = null;


        /// <summary>
        /// <para>Severity</para>
        /// <para><xdoc>
        ///   <para>A numeric value that represents the significance of the features or table records that have been written to the Reviewer workspace. The values range from 5 (low importance) to 1 (high priority). This value populates the Severity field in the Reviewer Results pane.</para>
        ///   <bulletList>
        ///     <bullet_item>String—You can type the value in the String text box.</bullet_item><para/>
        ///     <bullet_item>Field—You can choose the Severity value from a field on the feature layer.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>一个数值，表示已写入检查器工作空间的要素或表记录的重要性。值范围从 5（低重要性）到 1（高优先级）。此值将填充检查器结果窗格中的严重性字段。</para>
        ///   <bulletList>
        ///     <bullet_item>字符串 - 可在“字符串”（String） 文本框中键入值。</bullet_item><para/>
        ///     <bullet_item>字段 - 可从要素图层上的字段中选择严重性值。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Severity")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _in_severity { get; set; } = null;


        /// <summary>
        /// <para>REVTABLEMAIN</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("REVTABLEMAIN")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _REVTABLEMAIN_View { get; set; }


        /// <summary>
        /// <para>Check Title</para>
        /// <para><xdoc>
        ///   <para>Text that populates the Check Title field found in the Reviewer Results pane. Check Title is used to describe the error condition detected on the feature or table record.</para>
        ///   <bulletList>
        ///     <bullet_item>String—You can type the value in the String text box.</bullet_item><para/>
        ///     <bullet_item>Field—You can choose the Check Title value from a field on the feature layer.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>用于填充检查器结果窗格中的“检查标题”字段的文本。检查标题用于描述在要素或表记录上检测到的错误情况。</para>
        ///   <bulletList>
        ///     <bullet_item>字符串 - 可在“字符串”（String） 文本框中键入值。</bullet_item><para/>
        ///     <bullet_item>字段 - 您可以从要素图层上的字段中选择检查标题值。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Check Title")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _in_check_title { get; set; } = null;


        public WriteToReviewerTable SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}